from 数据生成 import DataGenerator
from 数据访问 import DataAccessor
from 指标计算 import MetricCalculator
from 查询展示 import QueryHandler
import warnings
warnings.filterwarnings("ignore")


def main():
    # 1. 数据生成层：生成模拟数据
    print("正在生成模拟数据...")
    generator = DataGenerator()
    regions_df = generator.generate_regions_data()
    contracts_df = generator.generate_contracts_data(1000)
    assets_df = generator.generate_assets_data()
    time_periods = generator.generate_time_periods()
    print("模拟数据生成完成！")

    # 2. 数据访问层：初始化数据访问器
    print("初始化数据访问层...")
    data_accessor = DataAccessor(regions_df, contracts_df, assets_df, time_periods)
    print("数据访问层初始化完成！")

    # 3. 指标计算层：计算所有业务指标
    print("正在计算业务指标...")
    calculator = MetricCalculator(data_accessor)
    metrics_df = calculator.calculate_all_metrics()
    print("业务指标计算完成！")

    # 4. 查询展示层：初始化查询处理器并进行示例查询
    print("初始化查询展示层...")
    query_handler = QueryHandler(data_accessor, metrics_df)
    print("查询展示层初始化完成！")

    # 导出数据到Excel
    # query_handler.export_to_excel()

    # 示例1：生成华东区最新季度的业务报告
    query_handler.generate_region_report("华东区")

    # 示例2：比较各区域2023Q4的首席再保人保费收入占比
    print("\n2023年第四季度各区域首席再保人保费收入占比排名：")
    lead_reinsurer_ranking = query_handler.compare_regions("首席再保人保费收入占比", "2023Q4")
    print(lead_reinsurer_ranking[["region_name", "metric_value"]].to_string(index=False))

    # 示例3：绘制华东区长期险保费占比趋势图
    query_handler.plot_region_metric_trend("华东区", "长期险保费占比")

    # 示例4：绘制2023Q4各区域团险保费占比对比图
    query_handler.plot_regions_comparison("团险保费占比", "2023Q4")

    # 示例5：获取新单业务价值占比最高的3个区域
    print("\n2023年第四季度新单业务价值占比最高的3个区域：")
    top_regions = query_handler.get_top_performing_regions("新单业务价值占比", "2023Q4", 3)
    print(top_regions[["region_name", "metric_value"]].to_string(index=False))


if __name__ == "__main__":
    main()
